package in.rob.client.page; import in.lib.Constants; import in.lib.event.DeletePostEvent; import in.lib.event.NewPostEvent; import in.lib.handler.streams.MentionsResponseHandler; import in.lib.helper.ResponseHelper; import in.lib.manager.APIManager; import in.lib.manager.UserManager; import in.model.Post; import in.model.User; import in.obj.entity.MentionEntity; import in.rob.client.MainActivity; import in.rob.client.page.base.PostStreamFragment; import in.rob.client.widget.ScrollWidgetProvider; import android.appwidget.AppWidgetManager; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.os.Bundle; import com.squareup.otto.Subscribe; /** * Fragment used for displaying posts in a fragment list * @author callumtaylor */ public class MentionsPage extends PostStreamFragment { private String userId = ""; @Override public void retrieveArguments(Bundle arguments) { super.retrieveArguments(arguments); if (arguments != null) { if (arguments.containsKey(Constants.EXTRA_USER_ID)) { userId = (String)arguments.get(Constants.EXTRA_USER_ID); } else if (arguments.containsKey(Constants.EXTRA_USER)) { userId = ((User)arguments.getParcelable(Constants.EXTRA_USER)).getId(); } else { userId = UserManager.getUserId(); } } } @Override public void setTicker(int count) { if (getActivity() instanceof MainActivity) { super.setTicker(count); } } @Subscribe @Override public void onPostRecieved(NewPostEvent event) { Post p = event.getPost(); if (p != null) { for (MentionEntity m : p.getMentions()) { if (m.getId().equals(userId)) { p.setMention(true); break; } } if (p.isMention()) { super.onPostRecieved(event); } } } @Subscribe @Override public void onPostDeleted(DeletePostEvent event) { super.onPostDeleted(event); } @Override public void fetchStream(String lastId, final boolean append) { showProgressLoader(); MentionsResponseHandler handler = new MentionsResponseHandler(getApplicationContext(), append); ResponseHelper.getInstance().addResponse(getResponseKeys()[0], handler, this); APIManager.getInstance().getMentions(userId, lastId, handler); } @Override public void onFinishedWriting() { if (android.os.Build.VERSION.SDK_INT >= 11) { Context context = getApplicationContext(); ComponentName name = new ComponentName(context, ScrollWidgetProvider.class); int[] ids = AppWidgetManager.getInstance(context).getAppWidgetIds(name); for (int index = 0; index < ids.length; index++) { Intent refresh = new Intent(AppWidgetManager.ACTION_APPWIDGET_UPDATE); refresh.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, ids[index]); getContext().sendBroadcast(refresh); } } } @Override public String getCacheFileName() { return String.format(Constants.CACHE_MENTION_LIST_NAME, this.userId); } @Override public String[] getResponseKeys() { return new String[]{String.format(Constants.RESPONSE_MENTIONS, userId)}; } }